home *** CD-ROM | disk | FTP | other *** search
/ The Java 3D API Specification (2nd Edition) / The Java 3D API Specification (2nd Edition).iso / programs / examples / Sound / AudioBehaviorMoveOne.java < prev    next >
Text File  |  2000-04-28  |  4KB  |  91 lines

  1. /*
  2.  *    @(#)AudioBehaviorMoveOne.java 1.4 00/02/10 13:15:02
  3.  *
  4.  * Copyright (c) 1996-2000 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
  7.  * modify and redistribute this software in source and binary code form,
  8.  * provided that i) this copyright notice and license appear on all copies of
  9.  * the software; and ii) Licensee does not utilize the software in a manner
  10.  * which is disparaging to Sun.
  11.  *
  12.  * This software is provided "AS IS," without a warranty of any kind. ALL
  13.  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
  14.  * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
  15.  * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
  16.  * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
  17.  * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
  18.  * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
  19.  * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
  20.  * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
  21.  * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
  22.  * POSSIBILITY OF SUCH DAMAGES.
  23.  *
  24.  * This software is not designed or intended for use in on-line control of
  25.  * aircraft, air traffic, aircraft navigation or aircraft communications; or in
  26.  * the design, construction, operation or maintenance of any nuclear
  27.  * facility. Licensee represents and warrants that it will not use or
  28.  * redistribute the Software for such purposes.
  29.  */
  30.  
  31. import javax.media.j3d.*;
  32. import javax.vecmath.*;
  33. import java.util.Enumeration;
  34.  
  35. // User defined audio behavior class
  36. public class AudioBehaviorMoveOne extends Behavior {
  37.     WakeupOnElapsedTime  wt;
  38.     WakeupOnBehaviorPost wp;
  39.         PointSound           psound = new PointSound();
  40.         static int           WAKEUP_SOUND = 0;
  41.         long                 dur;
  42.         // long                 time;
  43.         // long                 lastTime = -1;
  44.         boolean              first_loop = true;
  45.         String               fileName;
  46.         
  47.     // Override Behavior's initialize method to setup wakeup criteria
  48.     public void initialize() {
  49.             MediaContainer sample  = new MediaContainer();
  50.             sample.setCapability(MediaContainer.ALLOW_URL_WRITE);
  51.             sample.setCapability(MediaContainer.ALLOW_URL_READ);
  52.             sample.setURLString(fileName);
  53.             psound.setSoundData(sample);
  54.             // exaggerate the sound position now that viewPlatform
  55.             // tranform is taken into account
  56.             Point3f soundPos = new Point3f(-20.0f, 0.0f, 0.0f);
  57.             psound.setPosition(soundPos);
  58.         WakeupOnElapsedTime wp = new WakeupOnElapsedTime(5000);
  59.         wakeupOn(wp); 
  60.     }
  61.  
  62.     // Override Behavior's stimulus method to handle the event
  63.     public void processStimulus(Enumeration criteria) {
  64.             // time = System.currentTimeMillis();
  65.             if (first_loop) {
  66.                 first_loop = false;
  67.                 dur = psound.getDuration();
  68.                 if (dur == Sound.DURATION_UNKNOWN)
  69.                      dur = 2000;  // Force iterations every 2 seconds
  70.                 // System.out.println("     sound duration time " + dur);
  71.             wt = new WakeupOnElapsedTime(dur);
  72.             }
  73.             else {
  74.                 // System.out.println("  time between setEnables calls "+
  75.                 // (time - lastTime));
  76.                 psound.setEnable(false) ; 
  77.             }
  78.             psound.setEnable(true);
  79.             // lastTime = time;
  80.         wakeupOn(wt);
  81.     }
  82.  
  83.         //
  84.     // Constructor for rotation behavior.  Parameter: front and back Sound nodes
  85.         //
  86.     public AudioBehaviorMoveOne(PointSound psound, String filename) {
  87.             this.psound = psound;
  88.             this.fileName = filename;
  89.     }
  90. }
  91.